At times it may be desirable to allow applications running on a computer or computer system to share some files while restricting access to other files. For example, all the applications running on a particular machine may need to share files one through ten but perhaps only application A should have access to file eleven and only application B should have access to files twelve and thirteen. One way to accomplish this is to make several sets of the files all the applications need. That is, a first set of files might include a copy of files one through ten and file eleven for use by application A. A second set of files might include a copy of files one through ten and files twelve and thirteen for use by application B. One immediately obvious disadvantage to this approach is the additional storage space required for maintaining separate sets of files. Duplicative requirements for other system resources such as memory and paging space may also result from this approach. Another disadvantage to this approach is that when a file needs to be modified, it must be modified in both sets of files (e.g., if a new version of file one becomes available, file one in both sets of files would have to be updated).
It may be also sometimes be desirable to allow different access levels to different parts of the file system. For example, it may be desirable to allow application A to delete file one but not to allow application B to delete file one. Embodiments of the invention address these and other needs.